// RAP [bm] AboutDialog left out for now ///******************************************************************************* // * Copyright (c) 2008, 2009 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // ******************************************************************************/ // //package org.eclipse.ui.internal.about; // //import java.util.ArrayList; //import java.util.HashMap; //import java.util.List; //import java.util.Map; //import org.eclipse.core.runtime.Assert; //import org.eclipse.core.runtime.CoreException; //import org.eclipse.core.runtime.IConfigurationElement; //import org.eclipse.core.runtime.IExtensionPoint; //import org.eclipse.core.runtime.IProduct; //import org.eclipse.core.runtime.Platform; //import org.eclipse.jface.dialogs.Dialog; //import org.eclipse.jface.dialogs.IDialogConstants; //import org.eclipse.jface.dialogs.IDialogSettings; //import org.eclipse.jface.dialogs.TrayDialog; //import org.eclipse.osgi.util.NLS; //import org.eclipse.swt.SWT; //import org.eclipse.swt.events.DisposeEvent; //import org.eclipse.swt.events.DisposeListener; //import org.eclipse.swt.events.SelectionAdapter; //import org.eclipse.swt.events.SelectionEvent; //import org.eclipse.swt.graphics.FontMetrics; //import org.eclipse.swt.graphics.GC; //import org.eclipse.swt.graphics.Point; //import org.eclipse.swt.layout.GridData; //import org.eclipse.swt.layout.GridLayout; //import org.eclipse.swt.widgets.Button; //import org.eclipse.swt.widgets.Composite; //import org.eclipse.swt.widgets.Control; //import org.eclipse.swt.widgets.Label; //import org.eclipse.swt.widgets.Shell; //import org.eclipse.swt.widgets.TabFolder; //import org.eclipse.swt.widgets.TabItem; //import org.eclipse.ui.about.IInstallationPageContainer; //import org.eclipse.ui.about.InstallationPage; //import org.eclipse.ui.internal.ConfigurationInfo; //import org.eclipse.ui.internal.WorkbenchMessages; //import org.eclipse.ui.internal.WorkbenchPlugin; //import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants; //import org.eclipse.ui.services.IServiceLocator; // ///** // * @since 3.5 // * // */ //public class InstallationDialog extends TrayDialog implements // IInstallationPageContainer { // class ButtonManager { // // private Composite composite; // HashMap buttonMap = new HashMap(); // page id->Collection of page // // // buttons // // public ButtonManager(Composite composite) { // this.composite = composite; // } // // public Composite getParent() { // return composite; // } // // public void update(String currentPageId) { // if (composite == null || composite.isDisposed()) // return; // GC metricsGC = new GC(composite); // FontMetrics metrics = metricsGC.getFontMetrics(); // metricsGC.dispose(); // List buttons = (List) buttonMap.get(currentPageId); // Control[] children = composite.getChildren(); // // int visibleChildren = 0; // Button closeButton = getButton(IDialogConstants.CLOSE_ID); // // for (int i = 0; i < children.length; i++) { // Control control = children[i]; // if (closeButton == control) // closeButton.dispose(); // else { // control.setVisible(false); // setButtonLayoutData(metrics, control, false); // } // } // if (buttons != null) { // for (int i = 0; i < buttons.size(); i++) { // Button button = (Button) buttons.get(i); // button.setVisible(true); // setButtonLayoutData(metrics, button, true); // GridData data = (GridData) button.getLayoutData(); // data.exclude = false; // visibleChildren++; // } // } // // GridLayout compositeLayout = (GridLayout) composite.getLayout(); // compositeLayout.numColumns = visibleChildren; // composite.layout(true); // } // // protected void setButtonLayoutData(FontMetrics metrics, Control button, // boolean visible) { // GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); // int widthHint = Dialog.convertHorizontalDLUsToPixels(metrics, // IDialogConstants.BUTTON_WIDTH); // Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true); // data.widthHint = Math.max(widthHint, minSize.x); // data.exclude = !visible; // button.setLayoutData(data); // } // // public void addPageButton(String id, Button button) { // List list = (List) buttonMap.get(id); // if (list == null) { // list = new ArrayList(1); // buttonMap.put(id, list); // } // list.add(button); // } // // public void clear() { // buttonMap = new HashMap(); // } // } // // protected static final String ID = "ID"; //$NON-NLS-1$ // private static final String DIALOG_SETTINGS_SECTION = "InstallationDialogSettings"; //$NON-NLS-1$ // private final static int TAB_WIDTH_IN_DLUS = 440; // private final static int TAB_HEIGHT_IN_DLUS = 320; // // private static String lastSelectedTabId = null; // private TabFolder folder; // IServiceLocator serviceLocator; // private ButtonManager buttonManager; // private Map pageToId = new HashMap(); // private Dialog modalParent; // // /** // * @param parentShell // * @param locator // */ // public InstallationDialog(Shell parentShell, IServiceLocator locator) { // super(parentShell); // serviceLocator = locator; // // } // // /* // * (non-Javadoc) // * // * @see // * org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets // * .Shell) // */ // protected void configureShell(Shell newShell) { // super.configureShell(newShell); // String productName = ""; //$NON-NLS-1$ // IProduct product = Platform.getProduct(); // if (product != null && product.getName() != null) // productName = product.getName(); // newShell.setText(NLS.bind( // WorkbenchMessages.InstallationDialog_ShellTitle, productName)); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.dialogs.Dialog#isResizable() // */ // protected boolean isResizable() { // return true; // } // // /* // * (non-Javadoc) // * // * @see // * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets // * .Composite) // */ // protected Control createDialogArea(Composite parent) { // Composite composite = (Composite) super.createDialogArea(parent); // // folder = new TabFolder(composite, SWT.NONE); // configureFolder(); // createFolderItems(folder); // // GridData folderData = new GridData(SWT.FILL, SWT.FILL, true, true); // folderData.widthHint = convertHorizontalDLUsToPixels(TAB_WIDTH_IN_DLUS); // folderData.heightHint = convertVerticalDLUsToPixels(TAB_HEIGHT_IN_DLUS); // folder.setLayoutData(folderData); // folder.addSelectionListener(createFolderSelectionListener()); // folder.addDisposeListener(new DisposeListener() { // public void widgetDisposed(DisposeEvent e) { // releaseContributions(); // } // }); // return composite; // } // // protected void createFolderItems(TabFolder folder) { // IConfigurationElement[] elements = ConfigurationInfo // .getSortedExtensions(loadElements()); // for (int i = 0; i < elements.length; i++) { // IConfigurationElement element = elements[i]; // TabItem item = new TabItem(folder, SWT.NONE); // item.setText(element // .getAttribute(IWorkbenchRegistryConstants.ATT_NAME)); // item.setData(element); // item.setData(ID, element // .getAttribute(IWorkbenchRegistryConstants.ATT_ID)); // // Composite control = new Composite(folder, SWT.NONE); // control.setLayout(new GridLayout()); // item.setControl(control); // } // } // // protected Control createContents(Composite parent) { // Control control = super.createContents(parent); // boolean selected = false; // if (folder.getItemCount() > 0) { // if (lastSelectedTabId != null) { // TabItem[] items = folder.getItems(); // for (int i = 0; i < items.length; i++) // if (items[i].getData(ID).equals(lastSelectedTabId)) { // folder.setSelection(i); // tabSelected(items[i]); // selected = true; // break; // } // } // if (!selected) // tabSelected(folder.getItem(0)); // } // // need to reapply the dialog font now that we've created new // // tab items // Dialog.applyDialogFont(folder); // return control; // } // // private SelectionAdapter createFolderSelectionListener() { // return new SelectionAdapter() { // // public void widgetSelected(SelectionEvent e) { // tabSelected((TabItem) e.item); // } // }; // } // // /* // * Must be called after contributions and button manager are created. // */ // private void tabSelected(TabItem item) { // if (item.getData() instanceof IConfigurationElement) { // final IConfigurationElement element = (IConfigurationElement) item // .getData(); // // Composite pageComposite = (Composite) item.getControl(); // try { // final InstallationPage page = (InstallationPage) element // .createExecutableExtension(IWorkbenchRegistryConstants.ATT_CLASS); // page.createControl(pageComposite); // // new controls created since the dialog font was applied, so // // apply again. // Dialog.applyDialogFont(pageComposite); // page.setPageContainer(this); // // Must be done before creating the buttons because the control // // button creation methods // // use this map. // pageToId.put(page, element // .getAttribute(IWorkbenchRegistryConstants.ATT_ID)); // createButtons(page); // item.setData(page); // item.addDisposeListener(new DisposeListener() { // // public void widgetDisposed(DisposeEvent e) { // page.dispose(); // } // }); // pageComposite.layout(true, true); // // } catch (CoreException e1) { // Label label = new Label(pageComposite, SWT.NONE); // label.setText(e1.getMessage()); // item.setData(null); // } // // } // String id = (String) item.getData(ID); // rememberSelectedTab(id); // buttonManager.update(id); // Button button = createButton(buttonManager.getParent(), // IDialogConstants.CLOSE_ID, IDialogConstants.CLOSE_LABEL, true); // GridData gd = (GridData) button.getLayoutData(); // gd.horizontalAlignment = SWT.BEGINNING; // gd.horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH) / 2; // // Layout the button bar's parent and all of its children. We must // // cascade through all children because the buttons have changed and // // because tray dialog inserts an extra composite in the button bar // // hierarchy. // getButtonBar().getParent().layout(true, true); // // } // // protected void createButtons(InstallationPage page) { // page.createPageButtons(buttonManager.getParent()); // Dialog.applyDialogFont(buttonManager.getParent()); // } // // private void rememberSelectedTab(String pageId) { // lastSelectedTabId = pageId; // } // // /* // * (non-Javadoc) // * // * @see // * org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse // * .swt.widgets.Composite) // */ // protected void createButtonsForButtonBar(Composite parent) { // // The button manager will handle the correct sizing of the buttons. // // We do not want columns equal width because we are going to add some // // padding in the final column (close button). // GridLayout layout = (GridLayout) parent.getLayout(); // layout.makeColumnsEqualWidth = false; // buttonManager = new ButtonManager(parent); // } // // private void configureFolder() { // } // // private IConfigurationElement[] loadElements() { // IExtensionPoint point = Platform.getExtensionRegistry() // .getExtensionPoint("org.eclipse.ui", "installationPages"); //$NON-NLS-1$ //$NON-NLS-2$ // return point.getConfigurationElements(); // } // // protected IDialogSettings getDialogBoundsSettings() { // IDialogSettings settings = WorkbenchPlugin.getDefault() // .getDialogSettings(); // IDialogSettings section = settings.getSection(DIALOG_SETTINGS_SECTION); // if (section == null) { // section = settings.addNewSection(DIALOG_SETTINGS_SECTION); // } // return section; // } // // protected void releaseContributions() { // buttonManager.clear(); // } // // public void closeModalContainers() { // close(); // if (modalParent != null) // modalParent.close(); // } // // protected void buttonPressed(int buttonId) { // if (IDialogConstants.CLOSE_ID == buttonId) { // okPressed(); // } // } // // public void registerPageButton(InstallationPage page, Button button) { // buttonManager.addPageButton(pageToId(page), button); // } // // protected String pageToId(InstallationPage page) { // String pageId = (String) pageToId.get(page); // Assert.isLegal(pageId != null); // return pageId; // } // // /** // * Set the modal parent dialog that was used to launch this dialog. This // * should be used by any launching dialog so that the { // * {@link #closeModalContainers()} method can be properly implemented. // * // * @param parent // * the modal parent dialog that launched this dialog, or // * <code>null</code> if there was no parent. // * // * This is an internal method and should not be used outside of // * platform UI. // */ // public void setModalParent(Dialog parent) { // this.modalParent = parent; // } //}